package com.example.mybatisstudy.mapper;

import com.example.mybatisstudy.Enum.JdbcConstont;
import com.example.mybatisstudy.model.UserInfo;
import org.apache.ibatis.annotations.*;

@Mapper
public interface UserInfoMapper {

//    @Select("SELECT * FROM user_info WHERE id = #{id}")
    UserInfo selectUser(String id);

    /**
     * 结果集通过 mapping 返回
     * @param id
     * @return
     */
    UserInfo selectUser03(String id);

    @Select("SELECT * FROM user_info WHERE user_id = 1")
    @Options(useCache = true)
    UserInfo selectUser1(String id);

    @Select("SELECT * FROM user_info")
    UserInfo listUser();

    // 没有使用 @Parma 注解 且 参数是多个的情况下，需要使用 arg0,arg1 或者是  param1、param2,
//    @Select("SELECT * FROM user_info WHERE user_name = #{param1} or user_cert_id = #{param2}")
    @Select("SELECT * FROM user_info WHERE user_name = #{arg0} or user_cert_id = #{arg1}")
    UserInfo selectUserByNameOruserCertId(String name,String certId);

    /**
     * 这种写法是错误的，需要用 @Param 注解指定参数名称，或者在java compiler 加上 -parameters
     * @param name
     * @param certId
     * @return
     */
    // @Select("SELECT * FROM user_info WHERE user_name = #{name} or user_cert_id = #{certId}")
    UserInfo selectUserByNameOruserCertId1(String name,String certId);

}
